var myScrollSingle = new Array();
var myScrollUpDown = new Array();
//page json
var pageJson = {};
var common = {
    //系统运行的模式，development：开发模式，production：生产模式
    model: "development",
    //发版形式 app时候，会使用指定的api地址
    modelType: "web",
    //api地址 近当modelType为app时候使用
    api: "",
    // 系统对应语言
    sysLang: "",
    // 系统对应的浏览器
    sysClient: "",
    // 计数器，默认值为0
    counter: 0,
    //当前的页数
    currentPage: 1,
    //index的计数器
    pageIndexCounter: 0,
    //app版本
    version: "20170331",
    //ajax执行开始次数,多次ajax时候使用
    ajaxCounterBegin: 0,
    //ajax执行结束次数
    ajaxCounterEnd: 0,

    // 用于初始化公共属性
    initAttr: function () {
        // 语言包
        this.sysLang = this.getLang();
        // 浏览器
        this.sysClient = this.getClient();
    },
    /**
     * @todo 字符串转换为Json对象
     * @param str:Json字符串
     * @return:转换后的JSON对象
     */
    strToJson: function (str) {
        var json = eval('(' + str + ')');
        return json;
    },

    /**
     * 通过此方法，把中心部分的内容加载到新的页面上去
     *
     * @param pageUrl:需加载页面所页面地址;
     * @param reload:是否需要重新刷新页面
     * @param reverse，是否自动旋转加载
     * @return
     */
    loadPageDiv: function (pageUrl, reload, reverse) {
        var _this = this;
        // //判断是否为wifi连接，

        // 动态产生divName
        console.log("pageUrl====" + pageUrl + ",reload===" + reload + ",reverse===" + reverse);
        // //console.log(document.getElementById("pageDivPanel_" + divName) + ","
        // + document.getElementById("pageDivPanel_" + divName) == null);
        //现在修改loadPageDiv方法，以便更快捷的使用，Div名就是文件名
        var divName = pageUrl;
        if (divName == undefined || divName == "") {
            this.showTip("加载页面不能为空");
            return false;
        }
        //网络异常的时候给与提示
        if (common.model == "production" && typeof($net) != "undefined") {
            try {
                var getNetworkInfo = JSON.parse($net.getNetworkInfo());
                if (JSON.stringify(getNetworkInfo) == "false") {
                    common.showTip("网络链接失败，请稍后重试...");
                    return false;
                }
            } catch (e) {
                console.log("取得网络描述异常");
            }
        }

        var lastIndexHead = parseInt(divName.lastIndexOf("/")) + 1;
        var lastIndexEnd = divName.lastIndexOf(".");
        divName = divName.substring(lastIndexHead, lastIndexEnd);

        //动态加载JS，production模式下加载压缩文件
        var loadJSName = divName;
        if (common.model == "production") {
            loadJSName += ".min"
        }
        //加上文件加载的缓存
        var loadJSNameVersion = "?version=" + common.version;
        var random = Math.random();

        //记录html值的key
        var sessionStorageCurrentPageHtml = "pageDivPanelHtmlContent_" + divName;
        //开始加载页面
        if (document.getElementById("pageDivPanel_" + divName) == null) {
            // 创建iframe
            var divPanel = document.createElement("div");
            divPanel.id = "pageDivPanel_" + divName;
            divPanel.className = "pageDivPanel ui-mobile-viewport-transitioning ui-page";
            divPanel.height = "100%";
            divPanel.width = "100%";
            $("body").append(divPanel);
            //设置index
            common.pageIndexCounter += 1;
            $("#pageDivPanel_" + divName).css("z-index", common.pageIndexCounter);

            //初始创建的时候，加上随机码
            //pageUrl += "?" + Math.random();
            //如果是主画面，则进行保存在内存中，用以解决F5跳转问题
            //$(".pageDivPanel").hide();
            $("#pageDivPanel_" + divName).load(pageUrl, function () {
                //动态加载JS
                common.loadPageJSAndInit(loadJSName, loadJSNameVersion, divName);
            });
        } else {
            // 重新加载
            //如果存在，reload不为true则直接显示，啥也不做
            if (reload != undefined && reload) {
                // 每次申请去除缓存，加上随机码
                //$(".pageDivPanel").hide();
                $("#pageDivPanel_" + divName).load(pageUrl, function () {
                    //动态加载JS
                    common.loadPageJSAndInit(loadJSName, loadJSNameVersion, divName);
                });
            } else {
                if (divName == "index") {
                    common.loadPageJSAndInit(loadJSName, loadJSNameVersion, divName);
                }
                try {
                    console.log("初始化bindRout函数");
                    eval(divName).bindRout();
                } catch (e) {
                    console.log("当前页面无bindRout函数");
                }
            }
        }
        var fromPage = window.sessionStorage.currentShownSysPanelId;
        var toPage = "pageDivPanel_" + divName;

        //转场关闭来回页面
        common.animationend(fromPage);
        common.animationend(toPage);

        // 记录当前显示的panel
        window.sessionStorage.currentShownSysPanelId = "pageDivPanel_" + divName;
        // 默认reverse
        if ((fromPage == undefined && divName == "index") || (divName == "index" && fromPage == toPage)) {
            $("#pageDivPanel_" + divName).show();
        } else {
            common.transition(reverse, toPage, fromPage);
        }
        $(function () {
            FastClick.attach(document.body);
        });
    },
    /**
     * 异步加载页面用的js并执行初始化方法
     *
     */
    loadPageJSAndInit: function (loadJSName, loadJSNameVersion, divName) {
        //动态加载JS，production模式下加载压缩文件
        $script('js/app/' + loadJSName + '.js' + loadJSNameVersion, divName, function () {
            //ajax初始次数
            common.ajaxCounterBegin = 0;
            common.ajaxCounterEnd = 0;
            //调用初始化函数
            eval(divName).initialize();
            /*$(function() {
             FastClick.attach(document.body);
             });*/
        });
    },
    //添加转场动画css
    transition: function (reverse, to, from) {
        reverseClass = reverse ? " reverse" : "";
        //计算重置index
        var fromPageZindex = parseInt($("#" + from).css("z-index"));
        if (fromPageZindex > 4) {
            $("#" + window.sessionStorage.transitionPreToPageId).css("z-index", fromPageZindex - 2)
            $("#" + from).css("z-index", fromPageZindex - 1);
        }
        //$("#"+from).addClass("myslide out" + reverseClass);
        $("#" + to).css("z-index", parseInt($("#" + from).css("z-index")) + 1);
        $("#" + to).addClass("myslide in" + reverseClass);
        $("#" + to).addClass("show");
        setTimeout(function () {
            //$(".pageDivPanel").addClass("hide");
            $("#" + to).removeClass("hide");
            $(".pageDivPanel").not("#" + to).not("#" + from).css("z-index", 1);
            common.pageIndexCounter = 1;
            //记录页面to的id
            window.sessionStorage.transitionPreToPageId = from;
        }, 0);
    },
    // 绑定动画结束后事件
    animationend: function (page) {
        // 解绑事件
        $("#" + page).off('animationend webkitAnimationEnd mozAnimationEnd');
        // 绑定事件
        $("#" + page).on(
            'animationend webkitAnimationEnd mozAnimationEnd',
            function () {
                if ($(this).attr('class').indexOf(" in") > 0) {
                    $(this).removeClass();
                    $(this)
                        .addClass(
                        "pageDivPanel ui-mobile-viewport-transitioning ui-page");
                } else {
                    $(this).removeClass();
                    $(this)
                        .addClass(
                        "pageDivPanel ui-mobile-viewport-transitioning ui-page hide");
                }
            });
        //detail页不在最前面显示
        if(page=="pageDivPanel_detail"&&$("#pageDivPanel_detail").css("z-index")<=common.getMaxZindex()){
            $(".app_knowledge_studio").remove();
        }
    },
    /**
     * 获取URL的contextPath（相对地址）
     *
     * @returns 地址及工程目录
     */
    contextPath: function () {
        if (common.modelType.toLowerCase() == "web") {
            var origin = location.origin;
            var pathname = location.pathname;
            var projectname = pathname.substr(0, pathname.indexOf('/', 1));
            return origin + projectname;
        } else {
            return common.api;
        }
    },
    /**
     * ajax公共函数调用
     * @param ajaxUrl URL
     * @param functionParam
     *            string 函数参数
     * @param successCallBack
     * @param asyncflagParam
     *            false同步,true异步，
     *            countFlag:是否计数ajax
     * @returns
     */
    interfaceAjaxFunction: function (ajaxUrl, functionParam, successCallBack, asyncflagParam, otherparam, storage, countFlag) {
        var _this = this;
        //取得url key，用于记录本次访问的缓存，除非用户刷新或清掉缓存，否则直接使用缓存加快速度
        var sessionStorageKey = ajaxUrl.replace(/\//g, "").replace(/-/g, "_");

        // ajax地址
        var url = _this.contextPath() + ajaxUrl + "?radom=" + Math.random();
        // 同步,异步
        var asyncflag = true;// 默认异步
        if (asyncflagParam != undefined && !asyncflagParam) {
            asyncflag = false;
        }
        //如果传递过来参数为空，则转为空对象
        if (functionParam == undefined || functionParam == "") {
            functionParam = {};
        } else {
            //拼接上cacheKeySeria
            /*	if(functionParam.cacheKeySeria != undefined && functionParam.cacheKeySeria != ""){
             sessionStorageKey += functionParam.cacheKeySeria.replace(/\//g,"").replace(/-/g,"_");
             }*/
            sessionStorageKey += _this.getSignString(functionParam);
            //console.log("当前调用接口"+ ajaxUrl + ",sessionStorageKey===" + sessionStorageKey);
        }

        //缓存记录标识,默认取缓存
        if (storage == undefined || typeof(storage) != "boolean") {
            storage = true;
        }
        
         //是否记录当前页面ajax请求次数标识
        if (countFlag == undefined || typeof(countFlag) != "boolean") {
        	countFlag = true;
        }

        //缓存当前参数
        var sessionStorageParam = sessionStorageKey + "Param";

        var jsonParam = JSON.stringify(common.getSignData(functionParam));

        //看看当前接口调用是否已经调用过，调用过则取本地缓存数据
        //要加上参数，如果参数相同的情况下执行
        var sessionStorageCurrentValue = eval("window.sessionStorage." + sessionStorageKey);
        var sessionStorageCurrentParam = eval("window.sessionStorage." + sessionStorageParam);
        //console.log("缓存参数param==" + sessionStorageCurrentParam + ",现在申请的 ==" + JSON.stringify(functionParam));
        if (storage && sessionStorageCurrentValue != undefined && sessionStorageCurrentParam == JSON.stringify(functionParam) && sessionStorageCurrentValue != "") {
            var result = eval('(' + sessionStorageCurrentValue + ')');
            successCallBack(result, otherparam);
            console.log(ajaxUrl + "本地缓存");
        } else {
            common.showLoading();
            if(countFlag){
            	common.ajaxCounterBegin += 1;
            }
            console.log(ajaxUrl + "调用接口");
            $.ajax({
                type: "post",
                url: url,
                data: jsonParam,
                timeout: 30000,
                async: asyncflag,
                beforeSend: function (XMLHttpRequest) {
                    XMLHttpRequest.setRequestHeader("maurl", functionParam.maurl);
                },
                contentType: 'application/json;charset=utf-8',
                success: function (result) {
                	if(countFlag){
                		common.ajaxCounterEnd += 1;
                	}
                    // 进行转换一次
                    try {

                        if (typeof(result) == "string") {
                            result = eval('(' + result + ')');
                        }
                        //正常返回的时候，记录
                        if (result.status == "0") {
                            //console.log("返回调用接口:"+ajaxUrl + ",sessionStorageKey===" + sessionStorageKey + ",缓存参数为：" + JSON.stringify(functionParam));
                            //缓存当前参数
                            eval("window.sessionStorage.setItem('" + sessionStorageParam + "','" + JSON.stringify(functionParam) + "');");
                            //缓存当前接口返回内容
                            eval("window.sessionStorage.setItem('" + sessionStorageKey + "','" + JSON.stringify(result) + "');");
                        }
                        successCallBack(result, otherparam);
                    } catch (e) {
                        successCallBack(result, otherparam);
                    }
                    console.log("common.ajaxCounterBegin===" + common.ajaxCounterBegin + ",common.ajaxCounterEnd===" + common.ajaxCounterEnd);
                    if (common.ajaxCounterBegin == common.ajaxCounterEnd) {
                        setTimeout(function () {
                            $("#loadingPic").hide();
                        }, 200);
                    }
                },
                error: function (XMLHttpRequest, textStatus, errorThrown) {
                    common.ajaxCounterEnd += 1;
                    if (common.ajaxCounterBegin == common.ajaxCounterEnd) {
                        setTimeout(function () {
                            $("#loadingPic").hide();
                        }, 200);
                    }

                    //超时
                    if (textStatus == 'timeout') {
                        _this.showTip('网络链接超时，请检查网络后重试');
                    } else {
                        //返回标识
                        var rtnStr = {message: '网络链接失败，请稍后重试...', status: 1};
                        successCallBack(rtnStr, otherparam);
                    }
                    //_this.showTip('调用接口'+ ajaxUrl + '失败，请检查网络后重试');

                    setTimeout(function () {
                        $("#loadingPic").hide();
                    }, 200);
                }
            });
        }
    },
    /**
     * 取得浏览器语言，用于多语系判断 默认为英文
     */
    getLang: function () {
        var lang = "en";
        var navLang;// 系统语言标识
        var type = navigator.appName;
        if (type == "Netscape") {
            navLang = navigator.language;
        }
        else {
            navLang = navigator.userLanguage;
        }
        // alert(navLang);
        if (navLang == "zh-cn" || navLang == "zh-CN") {// 中文简体
            lang = "zh";
        } else if (navLang == "zh-tw" || navLang == "zh-TW" || navLang == "zh-hk" || navLang == "zh-HK") {// 中文繁体（包括香港繁体和台湾繁体）
            lang = "tw";
        }
        // alert(lang);
        return lang;
    },
    /**
     * 取得当前的浏览器 看看是否为安卓、IOS，微信、或其他
     */
    getClient: function () {
        // 判断浏览器类型
        var u = navigator.userAgent, app = navigator.appVersion;
        var isAndroid = u.indexOf('Android') > -1 || u.indexOf('Linux') > -1; // android终端或者uc浏览器
        var isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); // ios终端
        var client = this.isWeiXin() ? "wechat" : (isiOS ? "ios" : (isAndroid ? "android" : "other"));
        return client;
    },
    /**
     * 加载样式显示
     */
    showLoading: function () {
        var loadingHtml = '<div class="loadingcontainer" id="loadingPic">'
            + '<div class="loader4"></div>'
            + '</div>';

        if (document.getElementById("loadingPic") == null) {
            $("body").children().eq(0).before(loadingHtml);
        }
        $("#loadingPic").show();
        //设定一个超时时间
        //setTimeout(function(){$("#loadingPic").hide()},5000);
    },
    /**
     * 关闭加载样式
     */
    hideLoading: function () {
        //console.log("common.ajaxCounterBegin===" + common.ajaxCounterBegin + ",common.ajaxCounterEnd===" + common.ajaxCounterEnd);
        if (common.ajaxCounterBegin == common.ajaxCounterEnd) {
            $("#loadingPic").hide();
        }
    },
    /**
     * 带有确定按键的弹出提示
     *
     * @param message
     *            提示信息
     * @param callback
     *            回调函数
     */
    showDialog: function (message, callback) {
        //信息框
        layer.open({
            content: message,
            btn: '确定',
            shadeClose: false,
            yes: function (index) {
                if (typeof(callback) != "undefined") {
                    callback();
                }
                layer.close(index);
            }
        });
    },
    /**
     * 带有确定，取消按键的弹出提示
     *
     * @param message
     * @param callback
     */
    showConfirm: function (message, callback) {
        //使用layer的询问框
        layer.open({
            content: message,
            btn: ['确定', '取消'],
            yes: function (index) {
                if (typeof(callback) != "undefined") {
                    callback();
                }
                layer.close(index);
            }
        });
    },

    /**
     * 无按键，也会自动消失的弹出提示
     *
     * @param message
     *            提示信息
     * @param callback
     *            回调函数
     * @param showtime
     *            展现时长（ms）
     */
    showTip: function (content, time, callback) {
        if (!time) {
            time = 2000;
        }
        //使用layer提示
        layer.open({
            content: content
            , skin: 'msg'
            , time: time / 1000 //2秒后自动关闭
        });
        setTimeout(function () {
            (callback && typeof(callback) === "function") && callback();
            common.hideLoading();
        }, time);
    },
    /**
     * 显示弹出层的公共方法
     */
    showPopLayer: function (container, title) {
        var showPanelId = window.sessionStorage.currentShownSysPanelId;
        var popLayerKey = showPanelId + "_" + Math.random();
        if (title == undefined) {
            title = "";
        }
        // 生成绝不重复的内容
        var popLayerFrame = $('<div class="mask" id="' + popLayerKey + '" style="display:none;">'
            + '	<div class="popLayerFramer">'
            + '		     <div class="popLayerHeader">'
            + '		         <ul class="popLayerHeaderUl">'
            + '		             <li><span class="popLayerHeaderTitle">' + title + '</span></li>'
            + '		             <li id="assign_person"></li>'
            + '		             <li><a href="javascript:void(0);" class="point"></a></li>'
            + '		         </ul>'
            + '		    </div>'
            + '		    <div class="popLayerFrameContent" >' + $("#" + container).html() + '</div>'
            + '		</div>'
            + '	</div>');
        //载入显示
        $("#" + showPanelId).append(popLayerFrame);
        popLayerFrame.show();
        //关闭
        $(".point").unbind().on("click", function () {
            $(".mask").remove();
        });
    },
    /**
     * //判断为微信浏览器
     *
     * @returns {Boolean}
     */
    isWeiXin: function () {
        var ua = window.navigator.userAgent.toLowerCase();
        if (ua.match(/MicroMessenger/i) == 'micromessenger') {
            return true;
        } else {
            return false;
        }
    },
    /**
     * 解析URL攜帶的?之後的參數，轉換為對象，返回之
     *
     * @param location
     * @returns
     */
    getURLparams: function () {
        var o = {};
        if (location.search) {
            var search_params = location.search.substr(1).split('&');
            if (search_params) {
                $.each(search_params, function (i) {
                    o[this.split('=')[0]] = decodeURIComponent(this.split('=')[1]);
                });
            }
        }
        return o;
    },
    /**
     * 数据长度为0时，提示无数据
     *
     * @param message
     *            显示消息
     * @param container
     *            显示的页面容器对应对象ID 修正
     */
    show_nodata: function (message, container) {
        var window_height = document.documentElement.clientHeight;
        // 当前对象高度
        var containerHeight = $("#" + container).height();
        // 动态获得数据
        var _height = container == undefined ? window_height - 148 : containerHeight - 148;
        var _top = _height * 0.5;
        var _bottom = _height * 0.5;

        // 隐藏所有相关错误
        //$(".error-none").hide();
        // 当前panel
        var showPanelId = window.sessionStorage.currentShownSysPanelId;
        // 生成绝不重复的内容
        var no_data = $('<div class="error-none" id="showNoDataContent' + showPanelId + '" style=" padding-top:' + _top + 'px;height:100%;  padding-bottom:' + _bottom + 'px;">'
            + '<table width="100%" border="0" cellspacing="0" cellpadding="0" height="149px">'
            + '<tr><td valign="middle" width="100%"><img class="nodata_img" src="images/no_data.png"/><p>' + message + '</p></td></tr>'
            + '</table>'
            + '</div>');

        if ($("#" + showPanelId + " #" + container + " #showNoDataContent" + showPanelId).length == 0) {
            if (container != undefined && container != "") {
                $("#" + container).html(no_data);
            } else {
                $(".pageDivPanel").hide();
                $("#" + showPanelId).html(no_data).show();
            }
        }
        $("#showNoDataContent" + showPanelId).show();
    },
    /**
     * 报错的时候进行信息提示，根据是否传递过来参数进行显示
     *
     * @param message
     *            显示错误消息
     * @param container
     *            显示的页面容器对应对象ID 修正相应
     */
    show_error: function (message, container) {
        var window_height = document.documentElement.clientHeight;
        // 当前对象高度
        var containerHeight = $("#" + container).height();
        // 动态获得数据
        var _height = container == undefined ? window_height - 148 : containerHeight - 148;
        var _top = _height * 0.5;
        var _bottom = _height * 0.5;
        // 隐藏所有相关错误
        //$(".error-none").hide();
        // 当前panel
        var showPanelId = window.sessionStorage.currentShownSysPanelId;

        var no_data = $('<div class="error-none" id="showErrorContent_' + showPanelId + '" style=" padding-top:' + _top + 'px;height:100%;  padding-bottom:' + _bottom + 'px;">'
            + '<table width="100%" border="0" cellspacing="0" cellpadding="0" height="148px">'
            + '<tr><td valign="middle" width="100%"><img class="error_img" src="images/error-none.png"/><p>' + message + '</p></td></tr>'
            + '</table>'
            + '</div>');
        // 控制显示
        if ($("#" + showPanelId + " #" + container + " #showErrorContent_" + showPanelId).length == 0) {
            if (container != undefined && container != "") {
                $("#" + container).html(no_data);
            } else {
                $(".pageDivPanel").hide();
                $("#" + showPanelId).html(no_data).show();
            }
        }
        $("#showErrorContent_" + showPanelId).show();
    },
    /**
     * 判断字符是否为0-9、a-z、A-Z，是返回true,否返回false
     *
     * @param char_c
     *            传入一个字符
     */
    isAZaz09: function (char_c) {
        var reg = /^[\u4E00-\u9FA5]+$/;
        if (!reg.test(char_c)) {
            // //console.log("char_c=== " + char_c + " 不是中文");
            return true;
        }
        // //console.log("char_c=== " + char_c + " 是中文");
        return false;
    },
    /**
     * 微信禁止分享
     */
    weixinHideShare: function () {
        function onBridgeReady() {
            WeixinJSBridge.call('hideOptionMenu');
        }

        if (typeof WeixinJSBridge == "undefined") {
            if (document.addEventListener) {
                document.addEventListener('WeixinJSBridgeReady', onBridgeReady, false);
            } else if (document.attachEvent) {
                document.attachEvent('WeixinJSBridgeReady', onBridgeReady);
                document.attachEvent('onWeixinJSBridgeReady', onBridgeReady);
            }
        } else {
            onBridgeReady();
        }
    },
    /**
     * 计算文件大小，并返回合适单位大小
     *
     * @param fileSize
     *            文件大小，以b为单位传递过来
     * @returns {String}
     */
    calcFileSize: function (fileSize) {
        var rtnStr = "0B";
        // 小于1024时候,显示B
        if (fileSize < 1024) {
            rtnStr = fileSize + "B";
        } else if (fileSize >= 1024 && fileSize < 1024 * 1024) {
            rtnStr = (fileSize / 1024).toFixed(2) + "KB";
        } else {
            rtnStr = (fileSize / 1024 / 1024).toFixed(2) + "MB";
        }
        return rtnStr;
    },
    /**
     * 页面中制定位置加上滚动条 以及上拉加载，下拉刷新
     * param: obj 表示当前需要增加层的div
     *  index:用于处理在一个页面上有多个的情况
     */
    initIscroll: function (container, pullDownActionCallBack, pullUpActionCallBack, index) {
        //var myScroll;
        var pullDownEl, pullDownL;
        var pullUpEl, pullUpL;
        var Downcount = 0, Upcount = 0;
        var loadingStep = 0;// 加载状态0默认，1显示加载状态，2执行加载数据，只有当为0时才能再次加载，这是防止过快拉动刷新

        //参数判断
        if (!pullDownActionCallBack) {
            pullDownActionCallBack = undefined;
        }
        if (!pullUpActionCallBack) {
            pullUpActionCallBack = undefined;
        }
        //pageid
        var currentPageId = window.sessionStorage.currentShownSysPanelId;
        if (index != undefined && index != "") {
            currentPageId += "_" + index;
        }
        // 完善页面元素内容
        var scrollerInnerHtml = $("#" + container).html();
        // 下面定义上拉下拉函数
        var scrollerHeadStr =
            '        <div id="pullDown_' + currentPageId + '" class="ub ub-pc c-gra pullDown">'
            + '            <div class="pullDownIcon"></div>'
            + '            <div class="pullDownLabel">下拉刷新</div>'
            + '        </div>';

        var scrollerFooterStr = '<div id="pullUp_' + currentPageId + '" class="ub ub-pc c-gra pullUp" style="position:fixed;bottom:0;">'
            + '            <div class="pullUpIcon"></div>'
            + '            <div class="pullUpLabel">上拉显示更多...</div>'
            + '        </div>';
        //不加入头和尾
        if (pullDownActionCallBack == undefined || $("#" + container + " #pullDown_" + currentPageId).length > 0) {
            scrollerHeadStr = "";
        }

        if (pullUpActionCallBack == undefined || $("#" + container + " #pullUp_" + currentPageId).length > 0) {
            scrollerFooterStr = "";
        }
        //不在初始化
        if ($("#" + container + " #pullDown_" + currentPageId).length > 0 || $("#" + container + " #pullUp_" + currentPageId).length > 0) {
            var currentIndex = parseInt(eval("window.sessionStorage." + currentPageId + "_myScrollUpDown"));
            myScrollUpDown[currentIndex].refresh();
            return false;
        }


        $("#" + container).html("<div class='scroller_iscroll'>" + scrollerHeadStr + scrollerInnerHtml + scrollerFooterStr + "</div>");

        if (pullDownActionCallBack != undefined) {
            pullDownEl = $('#pullDown_' + currentPageId);
            pullDownL = pullDownEl.find('.pullDownLabel');
            pullDownEl['class'] = pullDownEl.attr('class');
            pullDownEl.attr('class', 'pullDown').hide();
        }

        if (pullUpActionCallBack != undefined) {
            pullUpEl = $('#pullUp_' + currentPageId);
            pullUpL = pullUpEl.find('.pullUpLabel');
            pullUpEl['class'] = pullUpEl.attr('class');
            pullUpEl.attr('class', 'pullUp').hide();
        }

        var iscroll = new IScroll('#' + container, {
            probeType: 2,// probeType：1对性能没有影响。在滚动事件被触发时，滚动轴是不是忙着做它的东西。probeType：2总执行滚动，除了势头，反弹过程中的事件。这类似于原生的onscroll事件。probeType：3发出的滚动事件与到的像素精度。注意，滚动被迫requestAnimationFrame（即：useTransition：假）。
            scrollbars: "custom",// 有滚动条
            mouseWheel: true,// 允许滑轮滚动
            fadeScrollbars: true,// 滚动时显示滚动条，默认影藏，并且是淡出淡入效果
            bounce: true,// 边界反弹
            interactiveScrollbars: true,// 滚动条可以拖动
            shrinkScrollbars: 'scale',// 当滚动边界之外的滚动条是由少量的收缩。'clip' or 'scale'.
            click: common.iScrollClick(), //调用判断函数
            keyBindings: true,// 允许使用按键控制
            momentum: true// 允许有惯性滑动
        });
        //保存到全局的数组中去
        myScrollUpDown.push(iscroll);
        //记录当前的key
        eval("window.sessionStorage.setItem('" + currentPageId + "_myScrollUpDown','" + (myScrollUpDown.length - 1) + "');");
        //当前key;
        var currentIndex = parseInt(eval("window.sessionStorage." + currentPageId + "_myScrollUpDown"));
        // 滚动时
        myScrollUpDown[currentIndex].on('scroll', function () {
            if (loadingStep == 0) {
                if (pullDownActionCallBack != undefined && this.y > 5 && !pullDownEl.attr('class').match('flip|loading')) {
                    // 下拉刷新效果
                    pullDownEl.attr('class', pullDownEl['class'])
                    pullDownEl.show();
                    myScrollUpDown[currentIndex].refresh();
                    pullDownEl.addClass('flip');
                    pullDownL.html('松手开始更新...');
                    loadingStep = 1;
                } else if (pullUpActionCallBack != undefined && this.y < (this.maxScrollY - 5) && !pullUpEl.attr('class').match('flip|loading')) {
                    // 上拉刷新效果
                    pullUpEl.attr('class', pullUpEl['class'])
                    pullUpEl.show();
                    myScrollUpDown[currentIndex].refresh();
                    pullUpEl.addClass('flip');
                    pullUpL.html('松手开始更新...');
                    loadingStep = 1;
                }
            }
        });
        // 滚动完毕
        myScrollUpDown[currentIndex].on('scrollEnd', function () {
            if (loadingStep == 1) {
                if (pullUpActionCallBack != undefined && pullUpEl.attr('class').match('flip|loading')) {
                    pullUpEl.removeClass('flip').addClass('loading');
                    pullUpL.html('Loading...');
                    loadingStep = 2;
                    //回调函数加载数据
                    pullUpActionCallBack();
                    //恢复设置
                    pullUpEl.removeClass('loading');
                    pullUpL.html('上拉显示更多...');
                    pullUpEl['class'] = pullUpEl.attr('class');
                    pullUpEl.attr('class', 'pullUp').hide();
                    myScrollUpDown[currentIndex].refresh();
                    loadingStep = 0;
                } else if (pullDownActionCallBack != undefined && pullDownEl.attr('class').match('flip|loading')) {
                    pullDownEl.removeClass('flip').addClass('loading');
                    pullDownL.html('Loading...');
                    loadingStep = 2;
                    //下拉结束回调函数
                    pullDownActionCallBack();
                    pullDownEl.removeClass('loading');
                    pullDownL.html('下拉显示更多...');
                    pullDownEl['class'] = pullDownEl.attr('class');
                    pullDownEl.attr('class', 'pullDown').hide();
                    myScrollUpDown[currentIndex].refresh();
                    loadingStep = 0;
                }
            }
        });
        // 默认事件去除
        document.addEventListener('touchmove', function (e) {
            e.preventDefault();
        }, false);
    },

    /**
     * 页面中制定位置加上滚动条 以及上拉加载，下拉刷新
     * param: obj 表示当前需要增加层的div
     * param:iscrollType:“水平”是horizontal,“竖直”是vertical
     */
    initIscrollBody: function (container) {
        //pageid
        var currentPageId = window.sessionStorage.currentShownSysPanelId;
        //当前key;
        var currentIndex = parseInt(eval("window.sessionStorage." + currentPageId + "_myScrollSingle"));
        if (myScrollSingle[currentIndex] != undefined) {
            myScrollSingle[currentIndex].destroy();
        }
        setTimeout(function () {
            var myscroll = new IScroll('#' + container, {
                probeType: 2,// probeType：1对性能没有影响。在滚动事件被触发时，滚动轴是不是忙着做它的东西。probeType：2总执行滚动，除了势头，反弹过程中的事件。这类似于原生的onscroll事件。probeType：3发出的滚动事件与到的像素精度。注意，滚动被迫requestAnimationFrame（即：useTransition：假）。
                scrollbars: "custom",// 有滚动条
                mouseWheel: true,// 允许滑轮滚动
                fadeScrollbars: true,// 滚动时显示滚动条，默认影藏，并且是淡出淡入效果
                bounce: true,// 边界反弹
                interactiveScrollbars: true,// 滚动条可以拖动
                shrinkScrollbars: 'clip',// 当滚动边界之外的滚动条是由少量的收缩。'clip' or 'scale'.
                click: common.iScrollClick(), //调用判断函数
                keyBindings: true,// 允许使用按键控制
                momentum: true// 允许有惯性滑动
            });
            //保存到全局的数组中去
            myScrollSingle.push(myscroll);
            //记录当前的key
            eval("window.sessionStorage.setItem('" + currentPageId + "_myScrollSingle','" + (myScrollSingle.length - 1) + "');");
            // 默认事件去除
            document.addEventListener('touchmove', function (e) {
                e.preventDefault();
            }, false);
        }, 200);
    },

    /**
     * 页面中制定位置加上滚动条 以及上拉加载，下拉刷新
     * param: obj 表示当前需要增加层的div
     * param:iscrollType:“水平”是horizontal,“竖直”是vertical
     */
    initIscrollBodyHorizontal: function (container) {
        var myScrollSingle = new IScroll('#' + container, {
            probeType: 2,// probeType：1对性能没有影响。在滚动事件被触发时，滚动轴是不是忙着做它的东西。probeType：2总执行滚动，除了势头，反弹过程中的事件。这类似于原生的onscroll事件。probeType：3发出的滚动事件与到的像素精度。注意，滚动被迫requestAnimationFrame（即：useTransition：假）。
            scrollbars: false,// 有滚动条
            mouseWheel: true,// 允许滑轮滚动
            fadeScrollbars: false,// 滚动时显示滚动条，默认影藏，并且是淡出淡入效果
            bounce: true,// 边界反弹
            interactiveScrollbars: true,// 滚动条可以拖动
            shrinkScrollbars: 'scale',// 当滚动边界之外的滚动条是由少量的收缩。'clip' or 'scale'.
            click: common.iScrollClick(), //调用判断函数
            keyBindings: true,// 允许使用按键控制
            momentum: true,// 允许有惯性滑动
            scrollX: true,
            scrollY: false
        });
        // 默认事件去除
        document.addEventListener('touchmove', function (e) {
            e.preventDefault();
        }, false);
    },
    /**
     * 解决iscroll的点击在安卓和ios不兼容的问题
     */
    iScrollClick: function () {
        if (/iPhone|iPad|iPod|Macintosh/i.test(navigator.userAgent)) return false;
        if (/Chrome/i.test(navigator.userAgent)) return (/Android/i.test(navigator.userAgent));
        if (/Silk/i.test(navigator.userAgent)) return false;
        if (/Android/i.test(navigator.userAgent)) {
            var s = navigator.userAgent.substr(navigator.userAgent.indexOf('Android') + 8, 3);
            return parseFloat(s[0] + s[3]) < 44 ? false : true
        }
    },
    /**
     * 签名算法的处理
     */
    getSignData: function (mainData) {
        // FIXME 这里的平台数据暂时用的死的，后期再完善。
        var ios = navigator.userAgent.match(/(iPad|iPhone|iPod)/g);
        var platform = "IOS";
        if (!ios) {
            platform = "Android";
        }
        var data = {
            data: mainData,
            ipAddress: "192.168.1.1",
            platform: common.sysClient,//platform:device.platform,  //cordova 获取设备名称方法
            timestamp: new Date().getTime().toString(),
            version: common.version,
            userid: window.localStorage.userid
        }
        data.sign = this.getSignString(data);
        return data;
    },
    getSignString: function (data) {
        var temp = "";
        for (key in data) {
            var value = data[key];
            if (key == "data") {
                value = JSON.stringify(value);
            }
            temp = temp + key + "=" + value;
            temp = temp + "&";
        }
        temp = temp.substr(0, temp.length - 1);
        return md5(this.enUnicodeString(temp));
    },
    enUnicodeString: function (str) {
        var res = [];
        for (var i = 0; i < str.length; i++)
            res[i] = (str.charCodeAt(i).toString(16)).slice(-4);
        return "\\u" + res.join("\\u");
    },
    /**
     * 产生指定长度随机数
     * @param len
     * @returns
     */
    createRandomString: function (len) {
        var len = len || 32;
        var $chars = 'ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678';
        var maxPos = $chars.length;
        var randomStr = '';
        for (i = 0; i < len; i++) {
            randomStr += $chars.charAt(Math.floor(Math.random() * maxPos));
        }
        return randomStr;
    },
    //计算文件大小，并返回
    calcFileSize: function (fileSize) {
        var rtnStr = "0B";
        //小于1024时候,显示B
        if (fileSize < 1024) {
            rtnStr = fileSize + "B";
        } else if (fileSize >= 1024 && fileSize < 1024 * 1024) {
            rtnStr = (fileSize / 1024).toFixed(2) + "KB";
        } else {
            rtnStr = (fileSize / 1024 / 1024).toFixed(2) + "MB";
        }
        return rtnStr;
    },
    /**
     * 去掉左右空格
     */
    strTrim: function (str) {
        return str.replace(/(^\s*)|(\s*$)/g, "");
    },
    /**
     * 获取所有div中Z-index最大值
     */
    getMaxZindex:function (){
        var divs = $(".pageDivPanel");
        var max=0;
        for(var i=0; i<divs.length; i++){
            max = Math.max( max,divs[i].style.zIndex || 0 );
        }
        return max;
    },
    /** 数组按首字母排序
     *@param prop 属性字段
     *@returns 排序后的数组 {Array}
     */
    rank:function (prop) {
        return function (obj1, obj2) {
            var val1 = obj1[prop];
            var val2 = obj2[prop];
            var af = obj1[prop].charAt(0);
            var bf = obj2[prop].charAt(0);
            if (af.localeCompare(bf) > 0) {
                return 1;
            } else if (af.localeCompare(bf) < 0) {
                return -1;
            } else {
                return 0;
            }
        };
    }
};
// 加载完成自动初始化
common.initAttr();

//先清除所有storage
window.sessionStorage.clear();

//取得用户信息
var urlParam = common.getURLparams();
//根据URL可以分三种情况 1.仅有userid  2.有userid和searchKey  3.有userid和industryName
//userid
var userid = urlParam.ucode;
if (userid != undefined) {
    window.localStorage.userid = userid;
}
//调用初始化函数
common.loadPageDiv("html/index.html");

//异步加载所需
$script("js/Frameworks/iuapmobile.frameworks.core.min.js?v=" + common.version, "iuapmobileFrameworks");
$script.ready('iuapmobileFrameworks', function () {
    $script("js/summer.min.js?v=" + common.version, function () {
        //eval("index").initialize();
    });
});